#pragma once
#include "Stack.h"
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <assert.h>
#include <string.h>

void swap(int* p1, int* p2);

void InsertSort(int* a, int n);
void ShellSort(int* a, int n);
void SelectSort(int* a, int n);
void BubbleSort(int* a, int n);

void AdjustDown(int* arr, int n, int parent);
void HeapSort(int* arr, int n);

int Part1Sort(int* a, int left, int right);
void QuickSort(int* a, int left, int right);

void MergeSort(int* a, int n);
void MergeSortNonR(int* a, int n);

void CountSort(int* a, int n);

